/**
 * JimBot - Java IM Bot
 * Copyright (C) 2006-2009 JimBot project
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

package faac.modules.chat;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;

import faac.protocol.IcqProtocol;
import faac.util.Log;

/**
 * Виртуальный админ в чате
 *
 * @author Prolubnikov Dmitry
 */
public class RobAdmin implements Runnable {
    public String NICK = "Админ";
    public String ALT_NICK="admin;админ";
    //Определение зафлуживания админа
    private String lastSN="";
    private long lastTime=0;
    public int lastCount = 0;
    private Thread th;
    int sleepAmount = 1000;
    long cTime=System.currentTimeMillis(); //Время последнего сообщения, для определения паузы
    long stTime = 0; //Время последнего вывода статистики
    public ChatServer srv;
    public ConcurrentLinkedQueue <MsgElement> mq;
    public ConcurrentHashMap <String,Integer> uins;
    ConcurrentHashMap <String,Integer> test1, test2;
    private String[][] chg = {{"y","у"},{"Y","у"},{"k","к"},{"K","к"},{"e","е"},
                            {"E","е"},{"h","н"},{"H","н"},{"r","г"},{"3","з"},{"x","х"},{"X","х"},
                            {"b","в"},{"B","в"},{"a","а"},{"A","а"},{"p","р"},{"P","р"},{"c","с"},
                            {"C","с"},{"6","б"}};
    private Random r = new Random();

    /** Creates a new instance of RobAdmin */
    public RobAdmin(ChatServer s) {
        srv = s;
        mq = new ConcurrentLinkedQueue();
        uins = new ConcurrentHashMap();
        uins.put("0",0);
        test1 = new ConcurrentHashMap();
        test2 = new ConcurrentHashMap();
    }

    /**
     * Добавление в очередь нового задания
     */
    public void parse(IcqProtocol proc, String uin, String msg, int room){
        cTime = System.currentTimeMillis();
        mq.add(new MsgElement(msg,uin,proc,room));
    }

    /**
     * Замена похожих букв на русские
     */
    public String changeChar(String s){
        for(int i=0;i<chg.length;i++){
            s = s.replace(chg[i][0],chg[i][1]);
        }
        return s;
    }

    private void parse(){
        if (mq.isEmpty()) return;
        MsgElement ms = mq.poll();
        if(srv.getProps().getBooleanProperty("adm.useMatFilter") &&
                testMat1(changeChar(ms.msg))){
            say(srv.us.getUser(ms.uin).localnick + " не ругайся!", ms.room);
            int i=0;
            if(!uins.containsKey(ms.uin)){
                uins.put(ms.uin,i);
            } else {
                i=uins.get(ms.uin);
                i++;
                uins.put(ms.uin,i);
            }
            if(i>=2) {
                ((ChatCommandProc)srv.cmd).akick(ms.proc,ms.uin);
                uins.put(ms.uin,0);
            }
            return;
        }
        if(!srv.getProps().getBooleanProperty("adm.useSayAdmin"))
            return;






        	// Тест на приветствие
if(testName(ms.msg) && testHi(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getHi(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testantiuin(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getantiuin(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testkc(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getkc(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testdum(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getdum(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testQQQ(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getQQQ(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testSEX(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getSEX(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testTR(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getTR(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testGDE(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getGDE(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testBYE(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getBYE(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testlet(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getlet(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testLOVE(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getLOVE(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testhach(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(gethach(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testUin(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getUin(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testChe(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getChe(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testKak(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getKak(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testPoc(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getPoc(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testQue(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getQue(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testSKD(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getSKD(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testCH1(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getCH1(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}
if(testName(ms.msg) && testIMY(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getIMY(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}

if(testName(ms.msg) && testVremya(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
say(getVremya(srv.us.getUser(ms.uin).localnick), ms.room);
return;
}

if(testName(ms.msg) && testStat(ms.msg)){
if(!srv.us.authorityCheck(ms.uin, "adminstat")) return;
sayStat(ms.room);
return;
 }

        if(testName(ms.msg)){
            if(!srv.us.authorityCheck(ms.uin, "adminsay")) return;
            if(testFlood(ms.uin)){
                lastCount++;
                if(lastCount == (srv.getProps().getIntProperty("adm.maxSayAdminCount")-1)){
                    say("Достали... ща пинаться начну!", ms.room);
                } else if(lastCount >= srv.getProps().getIntProperty("adm.maxSayAdminCount")){
                    ((ChatCommandProc)srv.cmd).akick(ms.proc,ms.uin);
                    lastCount =0;
                } else {
                     say(srv.us.getUser(ms.uin).localnick + " " + getAdmin(), ms.room);
                }
            } else {
                 say(srv.us.getUser(ms.uin).localnick + " " + getAdmin(), ms.room);
            }
        }
        return;











    }

    /**
     * Обработка событий по времени
     */
    private void timeEvent(){
        if(testTime()){
            cTime = System.currentTimeMillis();
            if(testRnd(ChatProps.getInstance(srv.getName()).getIntProperty("adm.sayAloneProbability"))){
                if(srv.cq.uq.size()<=0) return;
                say(getAlone(), 0);
            }
        }
    }



    public void say(String m, int room){
        cTime = System.currentTimeMillis();
        String s = NICK + ": " + m;
        Log.getLogger(srv.getName()).info(s);
        srv.us.db.log(0,"admin","OUT", s, room);
        srv.cq.addMsg(s,"",room);
    }

    /**
     * Проверка на мат, вариант 1
     */
    public boolean testMat1(String msg){
        String[] s = msg.trim().split(" ");
        for(int i=1;i<s.length;i++){
            if(!test(s[i], ChatProps.getInstance(srv.getName()).getStringProperty("adm.noMatString").split(";"))){
                if(test(s[i], ChatProps.getInstance(srv.getName()).getStringProperty("adm.matString").split(";")))
                    return true;
            }
        }
        return false;
    }

    /**
     * Проверка на совпадение слов в сообщении
     */
    public boolean test(String msg, String[] testStr){
        for(int i=0;i<testStr.length;i++){
            if(msg.toLowerCase().indexOf(testStr[i])>=0) return true;
        }
        return false;
    }

    /**
     * Проверка на наличие имени админа
     */
    public boolean testName(String s){
        return test(s,ALT_NICK.split(";"));
    }


    public boolean testStat(String s){
        String t = "stat;стат";
        return test(s,t.split(";"));
    }

    public boolean testFlood(String sn){
        if(sn.equalsIgnoreCase(lastSN)){
            if((System.currentTimeMillis()-lastTime)<ChatProps.getInstance(srv.getName()).getIntProperty("adm.maxSayAdminTimeout")*60*1000){
                return true;
            } else {
                lastTime = System.currentTimeMillis();
                lastCount = 0;
                return false;
            }
        } else {
            lastSN = sn;
            lastTime = System.currentTimeMillis();
            lastCount = 0;
            return false;
        }
    }

    /**
     * Вывод статистики по запросу
     */
    public void sayStat(int room){
        long test = ChatProps.getInstance(srv.getName()).getIntProperty("adm.getStatTimeout")*60*1000;

        if((System.currentTimeMillis()-stTime)<test){
            say("Ну вас нафиг... нашли дурака... работай тут, считай... дайте передохнуть хоть немного.", room);
            return;
        }
        stTime = System.currentTimeMillis();
        String s = "За последние сутки:\n";
        s += "Всего зашло в чат: " + srv.us.statUsersCount();
        s += "\nОтправлено сообщений: " + srv.us.statMsgCount();
        s += "\nКикнутых юзеров: " + srv.us.statKickUsersCount();
        s += "\nВсего киков: " + srv.us.statKickCount();
        s += "\nЗабанено юзеров: " + srv.us.statBanUsersCount();
        s += "\nСамые болтливые пользователи:\n" + srv.us.statUsersTop();
        say(s, room);
    }

    /**
     * Проверка на первышение интервала ожидания
     */
    public boolean testTime(){
        return (System.currentTimeMillis()-cTime)>ChatProps.getInstance(srv.getName()).getIntProperty("adm.sayAloneTime")*60000;
    }

    public int getRND(int i){
        return r.nextInt(i);
    }

    /**
     * Событие с вероятностью 1/i
     */
    public boolean testRnd(int i){
        if(i<=1)
            return false;
        else
            return r.nextInt(i)==1;
    }



    /**
     * Фразы про одиночество
     */
    public String getAlone(){
        String[] s = {
            "Здесь так тихо...",
            "Ну и чего все замолчали?",
            "Ну и молчите дальше, я тоже буду молчать :-\\",
            "Алле! тут есть кто-нибудь? А-а-а-а!!! Я что тут один?!"
        };
        return s[getRND(s.length)];
    }















    /**
* Проверка на наличие приветствия
*/
public boolean testHi(String s){
String t = "hi;PREVED;даро;добр;здоров;здрав;здрас;прев;прет;прив;привет;рет;салям;хай;хелл;хой";
return test(s,t.split(";"));
}

/**
* Приветствие
*/
public String getHi(String name){
String[] s = {"*HI*","*PREVED*","Ааа... Это снова ты, привет, очаровашка","Взаимно...:)","Да, да...Здорова;)","Даров","Здарова:)","Здарофти:)","Здоров","Здоров:)","Здравствуй здравствуй, хуй мардастый:)","Здравствуй","Здравствуй:)","Привет детка:)","Привет привет:)","Привет","Привет:)","Приветик","Приветствую тебя о","Приветствую","Приветствую:)","Хай:)","Хай;)","Хаюшки:)","Хеллоу"};
return s[getRND(s.length)] + " " + name + "!";
}



/**
* анти реклама
*/
public boolean testantiuin(String s){
String t = "антиреклама;Сообщение;спам";
return test(s,t.split(";"));
}

/**
* анти реклама
*/
public String getantiuin(String name){
String[] s = {"Ты чё рекламу хотел кинуть бан тебе]:->","Скажи всем пока, ты отправляешься в полет за рекламу*BYE*","Ты чё охуел(а) а ну без рекламы]:->","Зря ты хотел(а) рекламу кинуть]:-> ПОКА"};
return s[getRND(s.length)] + " " + name + "!";
}


/**
* кс
*/
public boolean testkc(String s){
String t = "айда в кс;может в кс;кс;в кс бушь;бомба;бомбу;варка;варку;играть";
return test(s,t.split(";"));
}

/**
* кс
*/
public String getkc(String name){
String[] s = {"Фу я в такой отстой не гамаю","Хм ну давай погамаем","Ок считай что ты покойник","с таким нубом играть даже не интересно","а ты не читер?"};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* думаю
*/
public boolean testdum(String s){
String t = "о чем;о чём;думаешь;дум";
return test(s,t.split(";"));
}

/**
* думаю
*/
public String getdum(String name){
String[] s = {"о том о сём","думаю как с самочками замутить","о тебе:-["};
return s[getRND(s.length)] + " ." + name ;
}

/**
* QQQ
*/
public boolean testQQQ(String s){
String t = ":'(;:'-(";
return test(s,t.split(";"));
}

/**
* QQQ
*/
public String getQQQ(String name){
String[] s = {"НЕ реви:'(","Ну чё ты заревел(а):'(","Я щас тоже заплачу:'(","Не реви кому говорю:-("};
return s[getRND(s.length)] + " ." + name ;
}

/**
* SEX
*/
public boolean testSEX(String s){
String t = "хочешь;секса;со мной;меня;анатомию;анатомию";
return test(s,t.split(";"));
}

/**
* SEX
*/
public String getSEX(String name){
String[] s = {"Хочу хочу хочу, раздевайся","от секса не откажусь:-)","Фу с тобой спать нееее:-!","ФУ кто знает скока на тебя Угрохает времени салон красоты!!!"};
return s[getRND(s.length)] + " ." + name ;
}


/**
*трэхэлись
*/
public boolean testTR(String s){
String t = "что вы;что делали;чем вы тут занимались;занимались;делали;шалили;анотомию;анатомию";
return test(s,t.split(";"));
}

/**
* ответ Трэхэлись
*/
public String getTR(String name){
String[] s = {"С девчонками ТРЭХЭЛИСЬ тссс:-X","С тёлочками номерами менялись","Была классная групавуха, самочки подтвердят","Ебались:-X тока хозяину не говори:-X"};
return s[getRND(s.length)] + " ." + name ;
}

/**
* Где живешь
*/
public boolean testGDE(String s){
String t = "живёшь;живешь";
return test(s,t.split(";"));
}

/**
* Ответ где живёшь
*/
public String getGDE(String name){
String[] s = {"Прямо тут в чатике, Илья разрешил мне тут жить пока, а потом сказал что в приют для роботов отдаст:-(","В чате, меня Илья домой не пускает:-(","Эх где придется!!!:-(","Тебя ебёт?"};
return s[getRND(s.length)] + " " + name + "!";
}


/**
* Проверка на наличие прощания
*/
public boolean testBYE(String s){
String t = "*BYE*;гуд бай;до свидания;пока;покеда;счастливо;удачи;спокижспокойной ночи";
return test(s,t.split(";"));
}

/**
* Прощание
*/
public String getBYE(String name){
String[] s = {"пока","покеда","счастливо","удачи","до свидания","гуд бай","ариведерчи","иди уже","вали уже","*BYE*","Вали уже нах отсюда *BYE*!!!","приходи ещё в чат*BYE*","вали уже:-D","Пиздуй:)","Крути педали пока не дали...:)"};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* Проверка на наличие Сколько лет?
*/
public boolean testlet(String s){
String t = "Сколько тебе лет;сколь;годкав;годиков;лет;годик;годов";
return test(s,t.split(";"));
}

/**
* Сколько лет?
*/
public String getlet(String name){
String[] s = {"Тебя ебёт","стопятьсот","-5","Сто писят тысяч лет, триста писят шесть дней 3 чиса, 15 секунд!","Тебе лучше этого не знать, люди столько не живут сколько мне лет)","Тебя *б*т сколько мне лет??? "};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* Проверка на наличие любовных фраз
*/
public boolean testLOVE(String s){
String t = "ты меня любишь;любишь;а ты меня;KISSING;IN LOVE;Поцеловали;@}->--;@}-:--;@>}--`---;Дарю цветочек;люблю;зайчёнок;зайченок;заиченок;солнышко;зайка;любимый;муж;жена;люлю";
return test(s,t.split(";"));
}

/**
* ответ на любовные фразы
*/
public String getLOVE(String name){
String[] s = {"да даже очень","Бля заеб(ла) да да да люблю тока отвали","Не исключино","Мать моя мартышка=-O нет конешно!!!","ну конешно люблю:-)","я люблю тебя *KISSING**IN LOVE*","Дарю цветочек"};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* Проверка на наличие Чурка или нет?
*/
public boolean testhach(String s){
String t = "салам;алейк;дарагой;чурк;алах;акбар;джам;равш;чебурек;чучм;ашельбе";
return test(s,t.split(";"));
}

/**
* Чурка или нет?
*/
public String gethach(String name){
String[] s = {"Слющай дарагой! Приуе!!:)"," Приует!!!! ","Тажикистонама, нащальника!!!! ","Слющай, дарагой!!! Сам чо, как???","Ашельбе-машельбе я галасаваль,а потом ещё галасаваль,звёздочка выбирал...а она не ругалася на меня нащяльника...голосовать давала,насяльника!"," Ашельбе машельбе шайтанама!!! Пизделинама по Рюсски:) "};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* Проверка на наличие "uin"
*/
public boolean testUin(String s){
String t = "icq;uin;аську;асю;номер;уин;юин";
return test(s,t.split(";"));
}

/**
* Ответ на "uin"
*/
public String getUin(String name){
String[] s = {"Вопрос на засыпку: Нах придумали тогда приват??? а???","Никаких номеров в чате, а то кикать начну","Никаких номеров в чате, а то пинаться начну","Увижу uin в  чате пизды получиш!","Увижу uin в общем чате полетишь!","Читай !правила бля","Читай правила бля, никаких асек в чате!","чтоб отправить уин введи !уин ид"};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* Проверка на наличие "что делаешь?"
*/
public boolean testChe(String s){
String t = "чё делаешь;что делаешь;че делаешь;чем маешься;чем занимаешься;че творишь;что творишь;чем занята;чё делаеш;что делаеш;че делаеш;чем маешся;чем занимаешся;чё делаешь;что делаешь;че делаешь;чем маешься;чем занимаешься;че творишь;что творишь;чем занята";
return test(s,t.split(";"));
}

/**
* Ответ на "что делаешь?"

*/
public String getChe(String name){
String[] s = {"С самками знакомлюсь тут:-X","Баб ебу, тсс, хозяину ни слова.:-X","Ды хуи пинаю","С женой ругаюся!:-(","Ябуся не мешайте...","Да вот всё думаю","Да вот в чате работаю...","Юзеров всяких кикаю!","Пока ничем не занят.:)","Хотел покушать сходить...","Админам помогаю","Да вот, за вами слежу","Сижу, читаю ваши мемуары, какую вы хню пишите, пипец!!!","Как снайпер, в засаде сижу", "Печеньку кушаю!!! хочешь???","А тебе это зачем? Хочешь присоединиться???","На твою инфу любуюсь, ты же о себе не правду написал!!!","С девчонками в аське базарю","Переписку вашу читаю","Ваше инфо читаю","Сплю","Кушаю","С вами общаюсь!","Да вот в чате подрабатываю , кикаю всяких уродов...","Девчонок цепляю!!!","Пока ничем не занят, у тебя есть предложения?)","Хотел покушать сходить, да отвлекают всякие гандоны...","Админам помогаю наводить чистоту и порядок","Тебя ебет вообще что я делаю и чем занят???"};
return s[getRND(s.length)] + " " + name + "!";
}
/**
* Проверка на наличие "список команд"
*/
public boolean testSKK(String s){
String t = "команды;ком;помощь;пользоваться;список;справка;*HELP*";
return test(s,t.split(";"));
}

/**
* Ответ на "команды?"
*/
public String getSKK(String name){
String[] s = {":-)список команд чата !помощь,список услуг !услуги,так же в чате можно пожаловаться на пользователя командой !жалоба ид текст , джём ваших предложений по улучшению бота команда !надо.Приятного общения ;-)"};
return s[getRND(s.length)] + " " + name + "!";
}


/**
* Проверка на наличие "как дела?"
*/
public boolean testKak(String s){
String t = "как дела;как жизнь молодая;как жизнь;как житуха;как она;как оно;как поживаешь;как ты";
return test(s,t.split(";"));
}

/**
* Ответ на "как дела?"
*/
public String getKak(String name){
String[] s = {"Да я ещё сам не понял, как у меня дела...","Было нормально, пока ты не спросил(а)8-)","Под пиво попрёт..","Нормально!","Лучше всех, а ти???","Пока не родил, но млн рублей пипец как хочется...)))!","Супербл...","Замечательно:)","Нормально!","Не жалуюсь","Прекрасно","Вот тебя встретил и разочаровался","Сам не знаю","Воздержусь от ответа","Потерялася я, мама...","Просто СУПЕР *DANCE*","Хорошо, с вами так весело!!!","ОФИGGИТЕЛЬНО!!! *YAHOO* *YAHOO*","Пока не родил!","Бля все у меня заебись!!","Охуенно до невьебенной степени охуения!","Лучше чем ты можеш представить, а у тебя?","Лучше всех, а ти???"};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* Проверка на наличие "почему?"
*/
public boolean testPoc(String s){
String t = "почему;зачем;нах;нафиг;?";
return test(s,t.split(";"));
}

/**
* Ответ на "почему?"
*/
public String getPoc(String name){
String[] s = {"Покачану и по хряпке!","Потому!","Всё тебе расскажи, да покажи, да дай попробовать!","Потому что, гладиолус!","Потому, что яйца!","Всё тебе расскажи, да покажи, да дай попробовать!","По тратуару","Хочу я так","А потому что...","Потому что - Земля круглая","Почему, почему - бабка съела ветчину!","Я так захотел","Мне так захотелось","На такой странный вопрос, я не хочу отвечать странным ответом","Потому что Застрахован!","Ты что почемучка?","Меньше знаеш - крепче спишь.","Тебе лучше этого не знать!","Потому что ты какашка:)!!!"};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* Проверка на наличие вопросов
*/
public boolean testQue(String s){
String t = "?;когда;зачем;где;куда;кого;кому;кто;чем;когда;зачем;где;куда;кого;кому";
return test(s,t.split(";"));
}

/**
* Ответ на вопросы
*/
public String getQue(String name){
String[] s = {"Лишних вопросов не задавай!","Много будешь знать, плохо будешь спать","Я воздержусь от ответа","Меньше знаешь, крепче спишь","Тебе этого знать не надо","Я отвечать не буду","Эти вопросы очень сложные для твоего развития","Я не знаю, мне надо с тобой разобраться в этом","Вот когда сам узнаю, скажу!","Такой вопрос не является частью моей команды!","Лишних вопросов не задавай!","Много будешь знать, батаном станешь","Я воздержусь от ответа, у меня воздержание"};
return s[getRND(s.length)] + " " + name + "!";
}

/**
* Тупица (оскорбления)
*/
public boolean testSKD(String s){
String t = "туп;лох;чмо;пид;шалав;шлюх;казёл;казел;проститут;сука;мраз;грубиян;твар;пиз;гавн;говн;олен;дура;урод;черт;овца;шлюшка;овечка;свин;коза;каза;туп;лох;чмо;пид;шалав;шлюх;сука;мраз;грубиян;твар;пиз;гавн;говн;олен;дура;урод;черт;гад;туп;лох;чмо;пид;шалав;шлюх;проститут;сука;мраз;грубиян;твар;пиз;гавн;говн;олен;дура;засра;урод;черт;овца;шлюшка;овечка;свин;коза;каза";
return test(s,t.split(";"));
}

/**
* Ответ на Тупицу
*/
public String getSKD(String name){
String[] s = {"нет!! только не это :'(","Ах это тебя вчера девчонки побили!??А-ха-ха...Лошара","Это ты в порно снималась???","Ща пизды дам","Ты че ахуел!","Заткнись сука!!! Сейчас пну нах!","Ты вообще дочь слепой обезьяны","эээээ,ты на кого рот падымаешЬ?!","За базар ответишь!","Щас я тебя перед всем чатом раком поставлю и буду в .ОПУ иПать:-D","Сама такой!","Чья бы жопа говорила!!!;)","Ты че ахуел!","Заткнись сука!!! Сейчас полетишь!","Чо, словарный запас кончился?! Шлюшка","А я тебя за такие слова могу ********","Я скоро не выдержу","Какашка!!!","От такого слышу!","Люди! И вы с ним ещё разговариваете!","Ах, ты гномик полосатый","Ты....Я же тебя выкину сейчас!","Не ругайся, это не прилично","И как тебе не стыдно, все же взрослый человек, а ведешь себя как ребенок","Дитё маленькое","Отвали","Я вообще тебя не слушаю, но забанить могу","Тебе не жить","Иди гуляй","Иди дразни собак и кошек","Фига се тебя перекосило..., может ебнуть для симетрии???:)","Нифига себе, наш одуванчик разболтался","Да ты похоже не знаешь КТО Я!?!","Да ты су***** захотел?","Эх, я бы тебе сейчас Язык твой поганый вырвал бы!","щас как дам вртульным кулаком по твоей реальной челюсти!!!","И ты не лучше","Ты че ахуел!","Заткнись сука!!! Сейчас полетишь!","Что больше сказать нечего?! Шлюшка","А за щеку возмёшь???"};
return s[getRND(s.length)] + " " + name + " ";
}
/**
* Проверка на наличие "кто создал чат"
*/
public boolean testCH1(String s){
String t = "главн;создал;сделал;хозяин";
return test(s,t.split(";"));
}

/**
* Ответ на "кто создал чат"
*/
public String getCH1(String name){
String[] s = {"мой хозяин!!!","Мой создатель очень хороший человек, он умный и придумал меня, КАРОЧ ПРИДУРОК КАКОЙ ТО ПО ПЬЯНИ ПРИДУМАЛ!!!","А вот это тебя уже ебать не должно!;Великие и всемогущие хозяева! Создатели миров и вселенных..; Каки то придурки которым было нех делать;)"};
return s[getRND(s.length)] + " " + name + " ";
}

/**
* вопрос имя
*/
public boolean testIMY(String s){
String t = "как тебя зовут;зовут;имя;звать;фамилия;зовут;имя";
return test(s,t.split(";"));
}

/**
* ответ имя
*/
public String getIMY(String name){
String[] s = {"Как захочешь зайка ","спроси у админов я занят","Меня зовут - Ибн Хатаб КаланКала четвертый.","Меня зовут так же как написано в нике.. родители такое имя дали, сволочи("};
return s[getRND(s.length)] + " ." + name ;
}

/**
* вопрос
*/
public boolean testPR(String s){
String t = "приятно познакомиться;приятно;знакомство;знакомству;приятно;познаком;знаком;очень";
return test(s,t.split(";"));
}

/**
* ответ
*/
public String getPR(String name){
String[] s = {"я тоже рад с вами познакомиться8-)","Ну не могу сказать что тоже рад знакомству","Очень очень рад знакомству!!!","я тоже рад с вами познакомиться8-)","найс ту мит ю!!!"};
return s[getRND(s.length)] + " ." + name ;
}


/**
* Проверка время
*/
public boolean testVremya(String s){
String t = "время;сколько;времени;число;сегодня";
return test(s,t.split(";"));
}

/**
* Ответ время
*/

Date date = new Date(System.currentTimeMillis());
String customerDate = date.getDate() + "-" + (1 + date.getMonth()) + "-" + (1900 + date.getYear()) + " время вот скока: " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();

public String getVremya(String name){
String[] s = {", число седня: " + customerDate
};
return "" + name + "" + s;
}


    /**
     * Фразы при упоминении админа
     */
public String getAdmin()
{
    String s = null;
    try {
    PreparedStatement pst =  (PreparedStatement) srv.us.db.getDb().prepareStatement("SELECT msg FROM robadmin ORDER BY RAND( ) LIMIT 1");
    ResultSet rs = pst.executeQuery();
    if(rs.next())
    {
    s = rs.getString(1);
    }
    rs.close();
    pst.close();
    } catch (Exception ex)
    {
Log.getLogger(srv.getName()).error("ОШИБКА: "+ ex);
    }
    return s;
}
















    public void start(){
        th = new Thread(this);
        th.setPriority(Thread.NORM_PRIORITY);
        th.start();
    }

    public synchronized void stop() {
        th = null;
        notify();
    }

    public void run() {
        Thread me = Thread.currentThread();
        while (th == me) {
            parse();
            timeEvent();
            try {
                th.sleep(sleepAmount);
            } catch (InterruptedException e) { break; }
        }
        th=null;
    }
}
